package com.njbw.design_pattern.created.factory.abstractFactory.resourceFactory;

import com.njbw.design_pattern.created.factory.abstractFactory.product.AbstractPictureResource;
import com.njbw.design_pattern.created.factory.abstractFactory.product.AbstractTextResource;
import com.njbw.design_pattern.created.factory.abstractFactory.product.AbstractVideoResource;

/**
 * 资源工厂接口——这是一种抽象
 * 抽象工厂模式是增加了产品族的概念，在抽象工厂模式中，客户端通过一个抽象工厂接口来创建一系列相关或相互依赖的对象，而不需要指定具体的类。
 * 新出了一个智能眼镜的产品族，小米有小米的智能眼镜，华为有华为的智能眼镜，这些智能眼镜都属于同一个产品族。
 *
 * @author 黄侯淳
 * @since JDK 1.8
 */
public interface IResourceLoader {

    /**
     * 加载图片资源产品族工厂方法
     *
     * @param url 给定的资源 url
     * @return 图片资源
     */
    AbstractPictureResource loadPictureResource(String url);

    /**
     * 加载视频资源产品族工厂方法
     *
     * @param url 给定的资源 url
     * @return 视频资源
     */
    AbstractVideoResource loadVideoResource(String url);

    /**
     * 加载文本资源产品族工厂方法
     *
     * @param url 给定的资源 url
     * @return 文本资源
     */
    AbstractTextResource loadTextResource(String url);
}
